package cn.com.bluemoon.daps.notice.template.base;

import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.*;

/**
 * @author Jarod.Kong
 */
public abstract class BaseMessage implements ITemplateMsg {

//    ***********基础属性********************

    /**
     * 收件人列表 nn
     */
    @Setter
    @Getter
    @NotEmpty(message = "收件人不可为空")
    private Collection<String> rcs;

    /**
     * 抄送/密送
     */
    @Setter
    @Getter
    private List<String> ccs = new ArrayList<>() , bcc = new ArrayList<>();

    /**
     * 邮件主题 nn
     */
    @Setter
    @Getter
    @NotNull(message = "主题内容不可为空")
    private String topic;

    /**
     * attachmentMap key文件名，value附件URL
     */
    @Setter
    @Getter
    private Map<String, String> attachmentMap;

    /**
     * 自定义发送记录id，便于外部获取发送内容
     */
    @Setter
    @Getter
    private String msgRecordId;

//    ***************************历史业务属性（可忽略）***********************

    /**
     * 发送者
     */
    @Setter
    @Getter
    private String sender;
    /**
     * 触发点（可空）
     */
    @Setter
    @Getter
    private String action = "同步结构到开发库";

    /**
     * （可空）
     */
    @Setter
    @Getter
    private SyncStatus syncStatus;

    public BaseMessage() {
        attachmentMap = new HashMap<>();
    }

    /**
     * 同步状态
     */
    public enum SyncStatus {
        /**
         * 同步失败、成功
         */
        Fail("同步失败"), Success("同步成功");
        private String desc;

        SyncStatus(String desc) {
            this.desc = desc;
        }

        public String getDesc() {
            return desc;
        }

        @Override
        public String toString() {
            return desc;
        }
    }

}
